package com.by.wechatsend;

import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.util.Date;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

import static java.awt.event.KeyEvent.*;

public class WeChatSend {
    private static int count=0;

    public static void main(String[] args) {

        //执行时间
        Date date = getDate(23, 00, 0);
        //Timer定时器
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                searchMyfriendsAndSend();
                count++;
                System.out.println("共发送了" + count + "天！！！");
            }
        };
        //延迟date毫秒执行一次发送方法
        timer.schedule(task, date);
    }

    //获取执行时间
    public static Date getDate(Integer hour, Integer minute, Integer second) {
        //设置执行时间
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);//每天
        calendar.set(year, month, day, hour, minute, second);
        Date date =calendar.getTime();
        //如果启动时间超过执行时间，则明天执行
        if (date.before(new Date())) {
            date = addDay(date, 1);
        }
        return date;
    }

    // 增加或减少天数
    public static Date addDay(Date date, int num) {
        Calendar startDT = Calendar.getInstance();
        startDT.setTime(date);
        startDT.add(Calendar.DAY_OF_MONTH, num);
        return (Date) startDT.getTime();
    }

    /**
     * @Description 模拟Chrl + F 搜索微信好友
     * @author baiyu
     * @date 2020/5/22 - 16:27
     */
    public static void searchMyfriendsAndSend() {
        // 创建Robot对象
        Robot robot = null;
        try {
            robot = new Robot();
        } catch (AWTException e) {
            e.printStackTrace();
        }
        //打开微信
        robot.keyPress(VK_CONTROL);
        robot.keyPress(VK_ALT);
        robot.delay(1000);
        robot.keyPress(VK_W);
        robot.keyRelease(VK_CONTROL);
        robot.keyRelease(VK_ALT);
        robot.keyRelease(VK_M);

        String myFriends1 = "李郁劫";// 定义要发送好友昵称
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
        String[] myFriends2 = myFriends1.split("[,]");// 字符串根据,分割
        //单个窗口的多句
        for (int i = 0; i < myFriends2.length; i++) {

            String mf = myFriends2[i];
            //Ctrl + F 搜索指定好友
            robot.keyPress(VK_CONTROL);
            robot.keyPress(VK_F);
            //将好友昵称发送到剪切板
            Transferable tText = new StringSelection(mf);
            clip.setContents(tText, null);
            robot.keyRelease(VK_CONTROL);
            robot.keyRelease(VK_F);

            // 以下两行按下了ctrl+v，完成粘贴功能
            robot.keyPress(VK_CONTROL);
            robot.keyPress(VK_V);
            //释放ctrl按键，像ctrl，退格键，删除键这样的功能性按键，在按下后一定要释放，
            //不然会出问题。crtl如果按住没有释放，在按其他字母按键是，敲出来的回事ctrl的快捷键。
            robot.keyRelease(VK_CONTROL);
            robot.keyRelease(VK_V);
            robot.delay(1000);// 延迟一秒
            robot.keyPress(VK_ENTER);// 回车
            robot.keyRelease(VK_ENTER);

            send();
        }
    }


    /**
     * @Description 给单个好友发消息多条随机消息
     * @author baiyu
     * @date 2022/5/9 - 12:25
     */
    public static void send() {

        // 创建Robot对象
        Robot robot = null;
        try {
            robot = new Robot();
        } catch (AWTException e) {
            e.printStackTrace();
        }

        String sentence1 = "晚上好[月亮],早起的虫儿被鸟吃,晚安、晚安！";// 定义要发送的话
        robot.delay(3000);// 延迟三秒，主要是为了预留出打开窗口的时间，括号内的单位为毫秒
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
        String[] sentence2 = sentence1.split("[,]");// 字符串根据,分割
        //单个窗口的多句
        for (int i = 0; i < sentence2.length; i++) {
            String sentencet = sentence2[i];
            //如果下标为1，怎将sentencet重新赋值，来完成替换
            if(i == 1){
                sentencet = getSencents.getSencents();
            }

            //将消息发送到剪切板
            Transferable tText = new StringSelection(sentencet);
            clip.setContents(tText, null);

            // 以下两行按下了ctrl+v，完成粘贴功能
            robot.keyPress(VK_CONTROL);
            robot.keyPress(VK_V);
            //释放ctrl按键，像ctrl，退格键，删除键这样的功能性按键，在按下后一定要释放，
            //不然会出问题。crtl如果按住没有释放，在按其他字母按键是，敲出来的回事ctrl的快捷键。
            robot.keyRelease(VK_CONTROL);
            robot.delay(1000);// 延迟一秒再发送
            robot.keyPress(VK_ENTER);// 回车
        }

    }
}
